recursion in JavaScript